﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Management;
using System.Text;

namespace WMI.NET.CIM
{
    /// <summary>
    /// The CIM_PCVideoController represents the capabilities and management of a personal computer video controller, a subtype of a video controller.
    /// </summary>
    public class CIM_PCVideoController : CIM_VideoController
    {

        private Nullable<UInt16> _NumberOfColorPlanes;
        private Nullable<UInt16> _VideoArchitecture;
        private Nullable<UInt16> _VideoMode;

        /// <summary>
        /// Current number of color planes. If this value is not applicable for the current video configuration, enter 0.
        /// </summary>
        public Nullable<UInt16> NumberOfColorPlanes { get { return _NumberOfColorPlanes; } }

        /// <summary>
        /// Video architecture. 
        /// </summary>
        public Nullable<UInt16> VideoArchitecture { get { return _VideoArchitecture; } } //TODO enum

        /// <summary>
        /// Current video mode.
        /// </summary>
        public Nullable<UInt16> VideoMode { get { return _VideoMode; } }


        /// <summary>
        /// 
        /// </summary>
        /// <param name="mbo"></param>
        public CIM_PCVideoController(ManagementBaseObject mbo)
            :base(mbo)
        {
            _NumberOfColorPlanes = mbo.GetUshortValue("NumberOfColorPlanes");
            _VideoArchitecture = mbo.GetUshortValue("VideoArchitecture");
            _VideoMode = mbo.GetUshortValue("VideoMode");
        }

    }
}
